﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Entidades.Catalogo;
using Control.Catalogo;
using Entidades.General;
using Navegador.Vistas;
using Control.Solicitud;

namespace SICOIA.UserControls.Afectados
{
    public partial class ucBusquedaPrediosAfectados : ViewController //System.Web.UI.UserControl
    {
        #region Controles
        EntUsuario usuario = new EntUsuario();
        #endregion

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if ((EntUsuario)Session["UserPemex"] == null)
                    Response.Write("<script>parent.window.open('../Marcos/EndPEMEX.aspx','_top')</script>");
                else
                    usuario = (EntUsuario)Session["UserPemex"];

                if (!Page.IsPostBack)
                {
                    if (Request.Params["accion"] != null)
                        hdfAccion.Value = Request.Params["accion"].ToString();

                    LlenarCombos();

                    this.cmbLocalidad.Items.Clear();
                    this.cmbLocalidad.Items.Insert(0, new ListItem("Seleccione un Elemento", "-1", true));

                    this.grdPrediosAfectados.DataSource = new List<Entidades.General.IEntidad>(); ;
                    this.grdPrediosAfectados.DataBind();
                }
            }
            catch (Exception ex)
            {
                Mensaje(ex.Message);
            }
        }

        #region Eventos Toolbar
        public void Buscar()
        {
            CtrlPredio control = new CtrlPredio();

            GuardarEstado("ListadoPredios", control.CriteriosObtenerTodos(txtReferencia.Text, rdbCriterios.SelectedValue, (cmbLocalidad.SelectedIndex > 0 ? cmbLocalidad.SelectedValue : string.Empty)));
            grdPrediosAfectados.DataSource = (List<Entidades.General.IEntidad>)ObtenerEstado("ListadoPredios");
            grdPrediosAfectados.DataBind();
        }
        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            try
            {
                Buscar();
            }
            catch (Exception ex)
            {
                Mensaje(ex.Message);
            }
        }

        #endregion

        #region "Utilerias"

        private void LlenarCombos()
        {
            try
            {
                CtrlMunicipio controlMunicipio = new CtrlMunicipio();
                List<EntMunicipio> ListaMunicipio = new List<EntMunicipio>();
                ListaMunicipio = (List<EntMunicipio>)controlMunicipio.ObtenerTodos().ConvertAll<EntMunicipio>(delegate(IEntidad enti) { return (EntMunicipio)enti; });

                int indexCombo = 0;
                this.cmbMunicipio.Items.Clear();
                this.cmbMunicipio.Items.Insert(0, new ListItem("Seleccione un Elemento", "-1", true));
                foreach (EntMunicipio elemento in ListaMunicipio)
                    this.cmbMunicipio.Items.Insert(indexCombo += 1, new ListItem(elemento.Descripcion, elemento.CveMunicipio.ToString(), true));
            }
            catch (Exception ex)
            {
                Mensaje(ex.Message);
            }
        }

        private void EjecutarScript(string Script)
        {
            string msg = string.Empty;
            msg = "<script type='text/javascript' language='javascript'>";
            msg = msg + Script + "</script>";

            ScriptManager.RegisterStartupScript(UpdatePanelCuerpo, this.GetType(), "temp", msg, false);
        }

        private void Mensaje(string mensaje)
        {
            string msg = string.Empty;
            msg = "<script type='text/javascript' language='javascript'>alert('";
            msg = msg + mensaje + "');</script>";

            ScriptManager.RegisterStartupScript(UpdatePanelCuerpo, this.GetType(), "temp", msg, false);
        }

        #endregion

        #region Eventos Gridview

        protected void grdPrediosAfectados_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridView gv = (GridView)sender;
            gv.PageIndex = e.NewPageIndex;

            grdPrediosAfectados.DataSource = (List<Entidades.General.IEntidad>)ObtenerEstado("ListadoPredios");
            grdPrediosAfectados.DataBind();
        }

        protected void grdPrediosAfectados_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Editar")
                Response.Redirect("ProxyUserControls.aspx?Url=PrediosAfectados&accion=editar&CvePredio=" + e.CommandArgument.ToString().Split('|')[0] + "&CveAfectado=" + e.CommandArgument.ToString().Split('|')[1], true);
            else if (e.CommandName == "Eliminar")
            {
                CtrlSolicitudAfectadoParticular ctrl = new CtrlSolicitudAfectadoParticular();
                int clavePredio = int.Parse(e.CommandArgument.ToString());
                ctrl.EliminarPredio(new EntPredio() { CvePredio = clavePredio });

                Buscar();
            }
        }

        #endregion

        #region Eventos Combos

        protected void cmbMunicipio_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                CtrlLocalidades controlLocalidades = new CtrlLocalidades();
                List<EntLocalidades> ListaLocalidades = new List<EntLocalidades>();
                ListaLocalidades = (List<EntLocalidades>)controlLocalidades.ObtenerTodos(new EntLocalidades() { CveMunicipio = int.Parse(cmbMunicipio.SelectedValue) }).ConvertAll<EntLocalidades>(delegate(IEntidad enti) { return (EntLocalidades)enti; });

                int indexCombo = 0;
                this.cmbLocalidad.Items.Clear();
                this.cmbLocalidad.Items.Insert(0, new ListItem("Seleccione un Elemento", "-1", true));
                foreach (EntLocalidades elemento in ListaLocalidades)
                    this.cmbLocalidad.Items.Insert(indexCombo += 1, new ListItem(elemento.Descripcion, elemento.CveLocalidad.ToString(), true));

                UpdatePanelLocalidad.Update();
            }
            catch (Exception ex)
            {
                Mensaje(ex.Message);
            }
        }

        #endregion

        protected void grdPrediosAfectados_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                EntPredio ent = (EntPredio)e.Row.DataItem;
                //ImageButton l = (ImageButton)e.Row.FindControl("btnEditar");
                HyperLink hpl = (HyperLink)e.Row.FindControl("hplSelecionar");

                if (hdfAccion.Value.Trim().Equals("Flotante"))
                {
                    //((ImageButton)e.Row.FindControl("btnAfectados")).Visible = false;
                    ((HyperLink)e.Row.FindControl("hplSelecionar")).Visible = true;
                    //hpl.Attributes.Add("onclick", "window.opener.CopyData('" + ent.CvePredio + "','" + ent.NombreAfectado + " - " + ent.Denominado + "');");
                    hpl.NavigateUrl = "Javascript:window.opener.CopyData('" + ent.CvePredio + "','" + ent.NombreAfectado + " - " + ent.Denominado + "');window.close();";
                }
                ImageButton btnEliminar = (ImageButton)e.Row.FindControl("btnEliminar");
                if (btnEliminar != null)
                    btnEliminar.Attributes.Add("onclick", "javascript:return " + "confirm('Esta seguro de eliminar esta Afectado?. " + "')");
                
            }
        }
    }
}